home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / pipe_fs_i.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  60 lines

  1. #ifndef _LINUX_PIPE_FS_I_H
  2. #define _LINUX_PIPE_FS_I_H
  3.  
  4. #define PIPEFS_MAGIC 0x50495045
  5.  
  6. #define PIPE_BUFFERS (16)
  7.  
  8. struct pipe_buffer {
  9.     struct page *page;
  10.     unsigned int offset, len;
  11.     struct pipe_buf_operations *ops;
  12. };
  13.  
  14. struct pipe_buf_operations {
  15.     int can_merge;
  16.     void * (*map)(struct file *, struct pipe_inode_info *, struct pipe_buffer *);
  17.     void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *);
  18.     void (*release)(struct pipe_inode_info *, struct pipe_buffer *);
  19. };
  20.  
  21. struct pipe_inode_info {
  22.     wait_queue_head_t wait;
  23.     unsigned int nrbufs, curbuf;
  24.     struct pipe_buffer bufs[PIPE_BUFFERS];
  25.     struct page *tmp_page;
  26.     unsigned int start;
  27.     unsigned int readers;
  28.     unsigned int writers;
  29.     unsigned int waiting_writers;
  30.     unsigned int r_counter;
  31.     unsigned int w_counter;
  32.     struct fasync_struct *fasync_readers;
  33.     struct fasync_struct *fasync_writers;
  34. };
  35.  
  36. /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual
  37.    memory allocation, whereas PIPE_BUF makes atomicity guarantees.  */
  38. #define PIPE_SIZE        PAGE_SIZE
  39.  
  40. #define PIPE_SEM(inode)        (&(inode).i_sem)
  41. #define PIPE_WAIT(inode)    (&(inode).i_pipe->wait)
  42. #define PIPE_BASE(inode)    ((inode).i_pipe->base)
  43. #define PIPE_START(inode)    ((inode).i_pipe->start)
  44. #define PIPE_LEN(inode)        ((inode).i_pipe->len)
  45. #define PIPE_READERS(inode)    ((inode).i_pipe->readers)
  46. #define PIPE_WRITERS(inode)    ((inode).i_pipe->writers)
  47. #define PIPE_WAITING_WRITERS(inode)    ((inode).i_pipe->waiting_writers)
  48. #define PIPE_RCOUNTER(inode)    ((inode).i_pipe->r_counter)
  49. #define PIPE_WCOUNTER(inode)    ((inode).i_pipe->w_counter)
  50. #define PIPE_FASYNC_READERS(inode)     (&((inode).i_pipe->fasync_readers))
  51. #define PIPE_FASYNC_WRITERS(inode)     (&((inode).i_pipe->fasync_writers))
  52.  
  53. /* Drop the inode semaphore and wait for a pipe event, atomically */
  54. void pipe_wait(struct inode * inode);
  55.  
  56. struct inode* pipe_new(struct inode* inode);
  57. void free_pipe_info(struct inode* inode);
  58.  
  59. #endif
  60.